package com.crm.controller;

import java.sql.Array;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.crm.model.pojo.Product;
import com.crm.services.DictionaryServices;
import com.crm.services.ProductServices;

@Controller
@RequestMapping("/product")
public class ProductController {

	@Autowired
	public ProductServices ps;
	@Autowired
	private DictionaryServices ds;
	
	/**
	 * 产品信息页面初始化
	 * @return
	 */
	@RequestMapping("/product")
	public ModelAndView findAllProduct() {	
		String[] DId=new String[] {"全部数据"};
		JSONArray array=ps.ListTransJSONArray(0,4,DId);//分页查询所有	
		ModelAndView mv=new ModelAndView("product/product");
		mv.addObject("productCount", ps.queryByCount());
		mv.addObject("Product", array);
		System.out.println("产品信息表");
		return mv;
	}
	
	/**
	 * 产品信息分页查询
	 * @param pageNumber
	 * @param pageCentent
	 * @return
	 */
	@RequestMapping("/productPageable")
	@ResponseBody
	public JSONObject productPageable(Integer pageNumber, Integer pageCentent, String[] DId) {	
		System.out.println("pageNumber:"+pageNumber);
		System.out.println("pageCentent:"+pageCentent);	
		System.out.println("DId的长度:"+DId.length);		
		int a=0;
		JSONObject json=new JSONObject();
		for (String string : DId) {
			System.out.println("DId"+a+":"+string);		 
			a+=1;
		}
		json.put("product",ps.ListTransJSONArray(pageNumber-1,pageCentent,DId));
		json.put("productCount", ps.queryByCount());
		return json;			
	}
	
	/**
	 * 产品信息新增时的数据字典信息
	 * @return
	 */
	@RequestMapping("/productAddDictionaryInfo")
	@ResponseBody
	public JSONArray productAddDictionaryInfo() {	
		System.out.println("productAddDictionaryInfo");
		JSONArray array=new JSONArray();
		 //array.add(ds.ListTransJSONArray(ds.findByDictParentid(1394)));//分类
		 array.add(ds.ListTransJSONArray(ds.findByDictParentid(1372)));//单位
		 array.add(ds.ListTransJSONArray(ds.findByDictParentid(1208)));//z状态
		return array;			
	}	

	/**
	 *模糊查询对应的 产品名称
	 * @param DId
	 * @return
	 */
	@RequestMapping("/withinProductFindByName")
	@ResponseBody
	public JSONArray withinProductFindByName(String[] DId) {	
		System.out.println("withinproductAddUnameInfo");
			return ps.ListTransJSONArray1(ps.queryByAll(0, 5, DId));
	}
	
	/**
	 *模糊查询对应的 产品id
	 * @param DId
	 * @return
	 */
	@RequestMapping("/withinProductFindById")
	@ResponseBody
	public JSONArray withinProductFindById(String[] DId) {	
		System.out.println("withinproductAddUnameInfo");
			return ps.ListTransJSONArray1(ps.queryByAll(0, 5, DId));
	}
	
	
	/**
	 * 新增产品信息
	 * @return
	 */
	@RequestMapping("/productAdd")
	@ResponseBody
	public int productAdd(@ModelAttribute("product") Product product) {	
		System.out.println("productAdd:"+product);
		return ps.save(product);			
	}
	
	/**
	 * 查找单个产品信息
	 * @param pId
	 * @return
	 */
	@RequestMapping("/findOneProduct")
	@ResponseBody
	public JSONObject findOneProduct(Integer pId) {	
		System.out.println("findOneProduct"+pId);
		return ps.findByPId(pId);			
	}
	
	/**
	 * 删除单个产品信息
	 * @param pId
	 * @return
	 */
	@RequestMapping("/Delete")
	@ResponseBody
	public int Delete(Integer pId) {	
		System.out.println("Delete:"+pId);
		ps.Delete(pId);
		return 1;			
	}
	
	@RequestMapping("/productclassify")
	public void findAllProductclassify() {
		System.out.println("产品分类管理");
	}
	
	/**
	 * 确认产品名称是否重复
	 */
	@RequestMapping("/findByPName")
	@ResponseBody
	public Integer findByPName(String pName) {
		System.out.println("触发确认产品名称是否重复:"+pName);			

			return ps.findByPName(pName);		
	}
	
	/**
	 * 查询前台页面的显示字段
	 * @return
	 */
	@RequestMapping("/showInfo")
	@ResponseBody
	public JSONObject showProductSetting(Integer userId) {
		System.out.println("当前用户编号:"+userId);
		
		return ps.showProductSetting(userId);
		
	}
	
	/**
	 * 修改前台页面的显示字段
	 */
	@RequestMapping("/updateInfo")
	@ResponseBody
	public void updateProductSetting(String[] Info) {
		System.out.println("当前要保存的数据显示数据:"+Info);
		
		for (String string : Info) {
			System.out.println(string);
		}
		ps.saveInfo(Info);
	}
	
	/**
	 * 这里是查询单个产品信息到ModelAndView然后跳转到产品视图界面的方法
	 * @param pId
	 * @return
	 */
	@GetMapping("/productView")
	public ModelAndView productView(Integer pId) {
		System.out.println("productView跳转:"+pId);
		ModelAndView mv=new ModelAndView("/product/productView");
		JSONArray array =new JSONArray();
		array.add(ps.findByPId(pId));//查询单个销售机会
		/*JSONArray a=stss.queryBySalId(pId);
		if(a!=null||a.size()!=0) {
			System.out.println("日志长度:"+a.size());
			array.add(a);//查询这个销售机会的跟踪日志					
		}*/
		mv.addObject("product", array);
		return mv;
		
	}
	
	/**
	 * 新建前台页面的显示字段数据
	 */
	public void addProductSetting(int userID) {
		
	}
}
